在 Swift 的程式語言設計初衷裡,與 Objective-C 相容是一個非常重視的設計概念,我們將了解 Objective-C 中,有什麼是可以不需要修正就可以直接被 Swift 使用。
Photo by @daveballew on Unsplash
Swift 在 2014 年 6 月的 WWDC 開發者大會上發布了,Swift 在發表的時候用的介紹詞是這樣的:
Programming language from Objective-C but without the C.
在當時,是非常轟動的事情,C 語言在 Objective-C 佔有很大的地位,而 Swift 吸取了 Objective-C 物件導向的經驗,去除了 C 語言容易出錯的部分,這在當時是難以想像的。
在 Swift (programming language): Comparisons to other languages - Wikipedia 這個章節中,詳細解釋了 Swift 與 C 語言/Objective-C 的異同,十分有趣!
在電腦科學中,關於資料的表達有一定的理論,而 Swift 沿用 C 語言的方式,使得 Swift 與 C 語言的基本型別有很大程度的共用。
我們知道 Swift 有 Int, Int8, Int16... 型別,而 C 語言則是 long, char, short...型別。
[勘誤] 因為平台關係,將好讀版本圖片放到留言區
| Swift | C Language | 
|---|---|
| Int8 | char, signed char | 
| UInt8 | unsigned char, short | 
| Int16 | short int,signed short, signed short int | 
| UInt16 | unsigned short, unsigned short int | 
| Int32 | int, signed, signed int | 
| UInt32 | unsigned, unsigned int | 
| Int/Int64 | long, long int, signed long, signed long int | 
| UInt/Int64 | unsigned long, unsigned long int | 
| Int | long long, long long int, signed long long, signed long long int | 
| UInt/UInt64 | unsigned long long, unsigned long long int | 
| Float | float | 
| Double | double | 
| Float80 | long double | 
long double 有特別的定義,跟 IEEE 有關,建議閱讀 long double - Wikipedia